### 显示模式入门 ​ 调用BIOS的10H中断可以用来设置显示模式。 进入320x200 256色显示模式 ```nasm mov ah,0 mov al,0x13 int 0x10 ``` 该显示模式在内存中的访问地址为0xA0000~0xAFFFF 若成功进入画面屏幕会显示为黑色(之前屏幕会有很多输出信息) #### 在屏幕上显示粉色 粉色的色号为0x56 ```nasm mov ax,0xa000 mov ds,ax mov ebx,0 mov ax,0x56 mov ecx,0xffff show_Pink: mov [ebx],ax inc ebx loop show_Pink ``` 显示结果如图: ![pink](picture/pink.png) 下面显示为线条形状: ```nasm mov ax,0xa000 mov ds,ax mov ebx,0 mov ax,0x56 mov ecx,0x4000 ;0x4000=(0xffff+1)/4 pink_line: mov [ebx],ax add ebx,4 loop pink_line ``` ![pink_line](picture/pink_line.png) 总实现代码为: ```none ;该文件参考Intel 64-ia-32手册。 ;本代码为Intel386处理器而写,但可运行在 Pentium 4, Intel Xeon, P6 family, Pentium,和Intel486处理器上 %include "boot.macro" section mbr vstart=LOADER_BASE ;LOADER_BASE=0x7c00 ;设置栈顶 mov ax,LOADER_BASE mov ss,ax mov sp,0 ;-----设置显示模式---------- ;640x480 256色图形 mov ah,0 mov al,0x13 int 0x10 ;设置ds为显示内存的段寄存器,a00000~affff ;ebx作为偏移地址 mov ax,0xa000 mov ds,ax mov ebx,0 ;显示粉色 mov ecx,0x4000 mov ax,0x56 pink_line: mov [ebx],ax add ebx,4 loop pink_line hlt times 510-($-$$) db 0 db 0x55,0xaa ``` 线条看起来总是令人头晕,还是调成纯粉的比较好 总代码为: ```none ;该文件参考Intel 64-ia-32手册。 ;本代码为Intel386处理器而写,但可运行在 Pentium 4, Intel Xeon, P6 family, Pentium,和Intel486处理器上 ;CPU复位后的默认地址为FFFF_FFF0H %include "boot.macro" section mbr vstart=LOADER_BASE ;设置栈顶 mov ax,LOADER_BASE mov ss,ax mov sp,0 ;-----设置显示模式---------- ;640x480 256色图形 mov ah,0 mov al,0x13 int 0x10 ;设置ds为显示内存的段寄存器,a00000~affff ;ebx作为偏移地址 mov ax,DISPLAY_BASE ;DISPLAY_BASE=0xa000 mov ds,ax mov ebx,0 ;显示粉色 mov ax,0x56 mov ecx,0xffff show_Pink: mov [ebx],ax inc ebx loop show_Pink hlt times 510-($-$$) db 0 db 0x55,0xaa ```